/*
 * Copyright (c) 2008, Xiong Yingfei, the University of Tokyo
 * All rights reserved.
 */
package ac.jp.u_tokyo.SyncLib.language2;

import java.util.Collection;
import java.util.List;
import java.util.Set;

import ac.jp.u_tokyo.SyncLib.language.EvaluationFailedException;
import ac.jp.u_tokyo.SyncLib.language.GraphCombinatorBody;
import ac.jp.u_tokyo.SyncLib.language.SyncBody;

public abstract class SyncConstruct extends LineConstruct
{
	public SyncConstruct(int line)
	{
		super(line);
	}
	
	public abstract Set<Var> getVarUsed(Collection<String> genericParas) throws EvaluationFailedException;
	
	public abstract SyncBody getBody(List<Var> imposedVars, Collection<String> genericParas) throws EvaluationFailedException;
	
	public abstract void addBody(GraphCombinatorBody body, Collection<String> genericParas) throws EvaluationFailedException;

}
